package gugga.tasks.helpers
{
	import flash.events.IEventDispatcher;
	
	import gugga.eventHelpers.EventDescriptor;

	[Event(name="preconditionsMet", type="PreconditionsManagerEvent")]
	public interface IPreconditionsManager extends IEventDispatcher
	{
		function isAccepting() : Boolean;
		function getPreconditionsMet() : Boolean;
		function add(aPrecondition : EventDescriptor) : void;
		function remove(aPrecondition : EventDescriptor) : void;
		function removeByEventSource(aEventSource : IEventDispatcher) : void;
		function replace(aPrecondition : EventDescriptor, aNewPrecondition : EventDescriptor) : void;
		function replaceEventSource(aEventSource : IEventDispatcher, aNewEventSource : IEventDispatcher) : void;
		function contains(aPrecondition : EventDescriptor) : Boolean;
		function accept(aPrecondition : EventDescriptor) : void;
		function acceptEventSource(aEventSource : IEventDispatcher) : void;
		function acceptAll() : void;
		function ignore(aPrecondition : EventDescriptor) : void;
		function ignoreEventSource(aEventSource : IEventDispatcher) : void;
		function ignoreAll() : void;
		function reset() : void;
	}
}
